<!DOCTYPE html>
<html lang="en-us">
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    
<meta charset="UTF-8">
<title>Get Watcher stats API | Elasticsearch Guide [7.7] | Elastic</title>
<link rel="home" href="index.html" title="Elasticsearch Guide [7.7]">
<link rel="up" href="watcher-api.html" title="Watcher APIs">
<link rel="prev" href="watcher-api-get-watch.html" title="Get watch API">
<link rel="next" href="watcher-api-put-watch.html" title="Put watch API">
<meta name="DC.type" content="Learn/Docs/Elasticsearch/Reference/7.7">
<meta name="DC.subject" content="Elasticsearch">
<meta name="DC.identifier" content="7.7">
<meta name="robots" content="noindex,nofollow">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://cdn.optimizely.com/js/18132920325.js"></script>
    <link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
    <link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
    <link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
    <link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
    <link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
    <link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
    <link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
    <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
    <link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192">
    <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
    <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
    <link rel="manifest" href="/manifest.json">
    <meta name="apple-mobile-web-app-title" content="Elastic">
    <meta name="application-name" content="Elastic">
    <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="msapplication-TileImage" content="/mstile-144x144.png">
    <meta name="theme-color" content="#ffffff">
    <meta name="naver-site-verification" content="936882c1853b701b3cef3721758d80535413dbfd">
    <meta name="yandex-verification" content="d8a47e95d0972434">
    <meta name="localized" content="true">
    <meta name="st:robots" content="follow,index">
    <meta property="og:image" content="https://www.elastic.co/static/images/elastic-logo-200.png">
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
    <link rel="icon" href="/favicon.ico" type="image/x-icon">
    <link rel="apple-touch-icon-precomposed" sizes="64x64" href="/favicon_64x64_16bit.png">
    <link rel="apple-touch-icon-precomposed" sizes="32x32" href="/favicon_32x32.png">
    <link rel="apple-touch-icon-precomposed" sizes="16x16" href="/favicon_16x16.png">
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    <link rel="stylesheet" type="text/css" href="/guide/static/styles.css">
  </head>

  <!--© 2015-2021 Elasticsearch B.V. Copying, publishing and/or distributing without written permission is strictly prohibited.-->

  <body>
    <!-- Google Tag Manager -->
    <script>dataLayer = [];</script><noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-58RLH5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-58RLH5');</script>
    <!-- End Google Tag Manager -->

    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-12395217-16"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'UA-12395217-16');
    </script>

    <!--BEGIN QUALTRICS WEBSITE FEEDBACK SNIPPET-->
    <script type="text/javascript">
      (function(){var g=function(e,h,f,g){
      this.get=function(a){for(var a=a+"=",c=document.cookie.split(";"),b=0,e=c.length;b<e;b++){for(var d=c[b];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null};
      this.set=function(a,c){var b="",b=new Date;b.setTime(b.getTime()+6048E5);b="; expires="+b.toGMTString();document.cookie=a+"="+c+b+"; path=/; "};
      this.check=function(){var a=this.get(f);if(a)a=a.split(":");else if(100!=e)"v"==h&&(e=Math.random()>=e/100?0:100),a=[h,e,0],this.set(f,a.join(":"));else return!0;var c=a[1];if(100==c)return!0;switch(a[0]){case "v":return!1;case "r":return c=a[2]%Math.floor(100/c),a[2]++,this.set(f,a.join(":")),!c}return!0};
      this.go=function(){if(this.check()){var a=document.createElement("script");a.type="text/javascript";a.src=g;document.body&&document.body.appendChild(a)}};
      this.start=function(){var a=this;window.addEventListener?window.addEventListener("load",function(){a.go()},!1):window.attachEvent&&window.attachEvent("onload",function(){a.go()})}};
      try{(new g(100,"r","QSI_S_ZN_emkP0oSe9Qrn7kF","https://znemkp0ose9qrn7kf-elastic.siteintercept.qualtrics.com/WRSiteInterceptEngine/?Q_ZID=ZN_emkP0oSe9Qrn7kF")).start()}catch(i){}})();
    </script><div id="ZN_emkP0oSe9Qrn7kF"><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>
    <!--END WEBSITE FEEDBACK SNIPPET-->

    <div id="elastic-nav" style="display:none;"></div>
    <script src="https://www.elastic.co/elastic-nav.js"></script>

    <!-- Subnav -->
    <div>
      <div>
        <div class="tertiary-nav d-none d-md-block">
          <div class="container">
            <div class="p-t-b-15 d-flex justify-content-between nav-container">
              <div class="breadcrum-wrapper"><span><a href="/guide/" style="font-size: 14px; font-weight: 600; color: #000;">Docs</a></span></div>
            </div>
          </div>
        </div>
      </div>
    </div>

    <div class="main-container">
      <section id="content">
        <div class="content-wrapper">

          <section id="guide" lang="en">
            <div class="container">
              <div class="row">
                <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                  <!-- start body -->
                  <div class="page_header">
<strong>IMPORTANT</strong>: No additional bug fixes or documentation updates
will be released for this version. For the latest information, see the
<a href="../current/index.html">current release documentation</a>.
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch Guide [7.7]</a></span>
»
<span class="breadcrumb-link"><a href="rest-apis.html">REST APIs</a></span>
»
<span class="breadcrumb-link"><a href="watcher-api.html">Watcher APIs</a></span>
»
<span class="breadcrumb-node">Get Watcher stats API</span>
</div>
<div class="navheader">
<span class="prev">
<a href="watcher-api-get-watch.html">« Get watch API</a>
</span>
<span class="next">
<a href="watcher-api-put-watch.html">Put watch API »</a>
</span>
</div>
<div class="section xpack">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="watcher-api-stats"></a>Get Watcher stats API<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/x-pack/docs/en/rest-api/watcher/stats.asciidoc">edit</a><a class="xpack_tag" href="/subscriptions"></a>
</h2>
</div></div></div>

<p>Retrieves the current Watcher metrics.</p>
<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="watcher-api-stats-request"></a>Request<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/x-pack/docs/en/rest-api/watcher/stats.asciidoc">edit</a>
</h3>
</div></div></div>
<p><code class="literal">GET _watcher/stats</code><br></p>
<p><code class="literal">GET _watcher/stats/&lt;metric&gt;</code></p>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="watcher-api-stats-prereqs"></a>Prerequisites<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/x-pack/docs/en/rest-api/watcher/stats.asciidoc">edit</a>
</h3>
</div></div></div>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
You must have <code class="literal">manage_watcher</code> or <code class="literal">monitor_watcher</code> cluster privileges to use
this API. For more information, see
<a class="xref" href="security-privileges.html" title="Security privileges">Security privileges</a>.
</li>
</ul>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="watcher-api-stats-path-params"></a>Path parameters<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/x-pack/docs/en/rest-api/watcher/stats.asciidoc">edit</a>
</h3>
</div></div></div>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">emit_stacktraces</code>
</span>
</dt>
<dd>
(Optional, boolean) Defines whether stack traces are generated for each watch
that is running. The default value is <code class="literal">false</code>.
</dd>
<dt>
<span class="term">
<code class="literal">&lt;metric&gt;</code>
</span>
</dt>
<dd>
<p>
(Optional, enum) Defines which additional metrics are included in the response.
</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">current_watches</code>
</span>
</dt>
<dd>
Includes the current executing watches in the response.
</dd>
<dt>
<span class="term">
<code class="literal">queued_watches</code>
</span>
</dt>
<dd>
Includes the watches queued for execution in the response.
</dd>
<dt>
<span class="term">
<code class="literal">_all</code>
</span>
</dt>
<dd>
Includes all metrics in the response.
</dd>
</dl>
</div>
</dd>
</dl>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="watcher-api-stats-response-body"></a>Response body<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/x-pack/docs/en/rest-api/watcher/stats.asciidoc">edit</a>
</h3>
</div></div></div>
<p>This API always returns basic metrics. You retrieve more metrics by using
the <code class="literal">metric</code> parameter.</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">current_watches</code>
</span>
</dt>
<dd>
<p>
(list) The current executing watches metric gives insight into the watches
that are currently being executed by Watcher. Additional information is
shared per watch that is currently executing. This information includes the
<code class="literal">watch_id</code>, the time its execution started and its current execution phase.
</p>
<pre class="literallayout">To include this metric, the `metric` option should be set to `current_watches`
or `_all`. In addition you can also specify the `emit_stacktraces=true`
parameter, which adds stack traces for each watch that is being executed. These
stack traces can give you more insight into an execution of a watch.</pre>

</dd>
<dt>
<span class="term">
<code class="literal">queued_watches</code>
</span>
</dt>
<dd>
<p>
(list) Watcher moderates the execution of watches such that their execution
won’t put too much pressure on the node and its resources. If too many watches
trigger concurrently and there isn’t enough capacity to execute them all, some
of the watches are queued, waiting for the current executing watches to finish
their execution. The queued watches metric gives insight on these queued
watches.
</p>
<pre class="literallayout">To include this metric, the `metric` option should include `queued_watches` or
`_all`.</pre>

</dd>
</dl>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="watcher-api-stats-example"></a>Examples<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/x-pack/docs/en/rest-api/watcher/stats.asciidoc">edit</a>
</h3>
</div></div></div>
<p>The following example calls the <code class="literal">stats</code> API to retrieve basic metrics:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">GET _watcher/stats</pre>
</div>
<div class="console_widget" data-snippet="snippets/2181.console"></div>
<p>A successful call returns a JSON structure similar to the following example:</p>
<div class="pre_wrapper lang-js">
<pre class="programlisting prettyprint lang-js">{
   "watcher_state": "started",  <a id="CO667-1"></a><i class="conum" data-value="1"></i>
   "watch_count": 1, <a id="CO667-2"></a><i class="conum" data-value="2"></i>
   "execution_thread_pool": {
      "size": 1000, <a id="CO667-3"></a><i class="conum" data-value="3"></i>
      "max_size": 1 <a id="CO667-4"></a><i class="conum" data-value="4"></i>
   }
}</pre>
</div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO667-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>The current state of watcher, which can be <code class="literal">started</code>, <code class="literal">starting</code>, or <code class="literal">stopped</code>.</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO667-2"><i class="conum" data-value="2"></i></a></p>
</td>
<td align="left" valign="top">
<p>The number of watches currently registered.</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO667-3"><i class="conum" data-value="3"></i></a></p>
</td>
<td align="left" valign="top">
<p>The number of watches that were triggered and currently queued for execution.</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO667-4"><i class="conum" data-value="4"></i></a></p>
</td>
<td align="left" valign="top">
<p>The largest size of the execution thread pool, which indicates the largest
number of concurrent executing watches.</p>
</td>
</tr>
</table>
</div>
<p>The following example specifies the <code class="literal">metric</code> option as a query string argument
and will include the basic metrics and metrics about the current executing watches:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">GET _watcher/stats?metric=current_watches</pre>
</div>
<div class="console_widget" data-snippet="snippets/2182.console"></div>
<p>The following example specifies the <code class="literal">metric</code> option as part of the url path:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">GET _watcher/stats/current_watches</pre>
</div>
<div class="console_widget" data-snippet="snippets/2183.console"></div>
<p>The following snippet shows an example of a successful JSON response that
captures a watch in execution:</p>
<div class="pre_wrapper lang-js">
<pre class="programlisting prettyprint lang-js">{
   "watcher_state": "started",
   "watch_count": 2,
   "execution_thread_pool": {
      "queue_size": 1000,
      "max_size": 20
   },
   "current_watches": [ <a id="CO668-1"></a><i class="conum" data-value="1"></i>
      {
         "watch_id": "slow_condition", <a id="CO668-2"></a><i class="conum" data-value="2"></i>
         "watch_record_id": "slow_condition_3-2015-05-13T07:42:32.179Z", <a id="CO668-3"></a><i class="conum" data-value="3"></i>
         "triggered_time": "2015-05-12T11:53:51.800Z", <a id="CO668-4"></a><i class="conum" data-value="4"></i>
         "execution_time": "2015-05-13T07:42:32.179Z", <a id="CO668-5"></a><i class="conum" data-value="5"></i>
         "execution_phase": "condition" <a id="CO668-6"></a><i class="conum" data-value="6"></i>
      }
   ]
}</pre>
</div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO668-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>A list of all the watches that are currently being executed by Watcher.
When no watches are currently executing, an empty array is returned. The
captured watches are sorted by execution time in descending order. Thus the
longest running watch is always at the top.</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO668-2"><i class="conum" data-value="2"></i></a></p>
</td>
<td align="left" valign="top">
<p>The id of the watch being executed.</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO668-3"><i class="conum" data-value="3"></i></a></p>
</td>
<td align="left" valign="top">
<p>The id of the watch record.</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO668-4"><i class="conum" data-value="4"></i></a></p>
</td>
<td align="left" valign="top">
<p>The time the watch was triggered by the trigger engine.</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO668-5"><i class="conum" data-value="5"></i></a></p>
</td>
<td align="left" valign="top">
<p>The time the watch was executed. This is just before the input is being
executed.</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO668-6"><i class="conum" data-value="6"></i></a></p>
</td>
<td align="left" valign="top">
<p>The current watch execution phase. Can be <code class="literal">input</code>, <code class="literal">condition</code> <code class="literal">actions</code>,
<code class="literal">awaits_execution</code>, <code class="literal">started</code>, <code class="literal">watch_transform</code>, <code class="literal">aborted</code>, <code class="literal">finished</code>.</p>
</td>
</tr>
</table>
</div>
<p>The following example specifies the <code class="literal">queued_watches</code> metric option and includes
both the basic metrics and the queued watches:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">GET _watcher/stats/queued_watches</pre>
</div>
<div class="console_widget" data-snippet="snippets/2184.console"></div>
<p>An example of a successful JSON response that captures a watch in execution:</p>
<div class="pre_wrapper lang-js">
<pre class="programlisting prettyprint lang-js">{
   "watcher_state": "started",
   "watch_count": 10,
   "execution_thread_pool": {
      "queue_size": 1000,
      "max_size": 20
   },
   "queued_watches": [ <a id="CO669-1"></a><i class="conum" data-value="1"></i>
         {
            "watch_id": "slow_condition4", <a id="CO669-2"></a><i class="conum" data-value="2"></i>
            "watch_record_id": "slow_condition4_223-2015-05-21T11:59:59.811Z", <a id="CO669-3"></a><i class="conum" data-value="3"></i>
            "triggered_time": "2015-05-21T11:59:59.811Z", <a id="CO669-4"></a><i class="conum" data-value="4"></i>
            "execution_time": "2015-05-21T11:59:59.811Z" <a id="CO669-5"></a><i class="conum" data-value="5"></i>
         },
      ...
   ]
}</pre>
</div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO669-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>A list of all watches that are currently queued for execution. When no
watches are queued, an empty array is returned.</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO669-2"><i class="conum" data-value="2"></i></a></p>
</td>
<td align="left" valign="top">
<p>The id of the watch queued for execution.</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO669-3"><i class="conum" data-value="3"></i></a></p>
</td>
<td align="left" valign="top">
<p>The id of the watch record.</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO669-4"><i class="conum" data-value="4"></i></a></p>
</td>
<td align="left" valign="top">
<p>The time the watch was triggered by the trigger engine.</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO669-5"><i class="conum" data-value="5"></i></a></p>
</td>
<td align="left" valign="top">
<p>The time the watch was went into a queued state.</p>
</td>
</tr>
</table>
</div>
</div>

</div>
<div class="navfooter">
<span class="prev">
<a href="watcher-api-get-watch.html">« Get watch API</a>
</span>
<span class="next">
<a href="watcher-api-put-watch.html">Put watch API »</a>
</span>
</div>
</div>

                  <!-- end body -->
                </div>
                <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                  <div id="rtpcontainer" style="display: block;">
                    <div class="mktg-promo">
                      <h3>Most Popular</h3>
                      <ul class="icons">
                        <li class="icon-elasticsearch-white"><a href="https://www.elastic.co/webinars/getting-started-elasticsearch?baymax=default&amp;elektra=docs&amp;storm=top-video">Get Started with Elasticsearch: Video</a></li>
                        <li class="icon-kibana-white"><a href="https://www.elastic.co/webinars/getting-started-kibana?baymax=default&amp;elektra=docs&amp;storm=top-video">Intro to Kibana: Video</a></li>
                        <li class="icon-logstash-white"><a href="https://www.elastic.co/webinars/introduction-elk-stack?baymax=default&amp;elektra=docs&amp;storm=top-video">ELK for Logs &amp; Metrics: Video</a></li>
                      </ul>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </section>

        </div>


<div id="elastic-footer"></div>
<script src="https://www.elastic.co/elastic-footer.js"></script>
<!-- Footer Section end-->

      </section>
    </div>

<script src="/guide/static/jquery.js"></script>
<script type="text/javascript" src="/guide/static/docs.js"></script>
<script type="text/javascript">
  window.initial_state = {}</script>
  </body>
</html>
